package com.youlai.boot.modules.game.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.modules.game.model.entity.GameUserRecord;
import com.youlai.boot.modules.game.model.form.GameUserRecordForm;
import com.youlai.boot.modules.game.model.query.GameUserRecordQuery;
import com.youlai.boot.modules.game.model.vo.GameUserRecordVO;

import java.util.List;
import java.util.Map;

/**
 * 游戏用户记录服务接口
 *
 * @author 有来技术团队
 */
public interface GameUserRecordService extends IService<GameUserRecord> {

    /**
     * 分页查询用户游戏记录
     *
     * @param query 查询条件
     * @return 分页结果
     */
    Page<GameUserRecordVO> getUserGameRecords(GameUserRecordQuery query);

    /**
     * 获取用户游戏记录详情
     *
     * @param id 记录ID
     * @return 游戏记录详情
     */
    GameUserRecordVO getUserGameRecord(Long id);

    /**
     * 更新游戏记录
     *
     * @param id 记录ID
     * @param form 表单数据
     * @return 是否成功
     */
    boolean updateUserGameRecord(Long id, GameUserRecordForm form);

    /**
     * 添加或更新游戏记录
     *
     * @param form 表单数据
     * @return 记录ID
     */
    Long saveUserGameRecord(GameUserRecordForm form);

    /**
     * 查询用户游戏类型分布
     *
     * @param userId 用户ID
     * @return 游戏类型分布数据
     */
    List<Map<String, Object>> getGameTypeDistribution(Long userId);

    /**
     * 查询用户游戏进度列表
     *
     * @param userId 用户ID
     * @param limit 限制数量
     * @return 游戏进度列表
     */
    List<Map<String, Object>> getGameProgressList(Long userId, Integer limit);

    /**
     * 更新游戏记录的游戏时长
     *
     * @param id 记录ID
     * @param playTimeIncrement 增加的时长(秒)
     * @return 是否成功
     */
    boolean incrementPlayTime(Long id, Integer playTimeIncrement);
} 